Zabbix API请求应用

您所在的位置:网站首页 curl 打印header Zabbix API请求应用

Zabbix API请求应用

#Zabbix API请求应用| 来源: 网络整理| 查看: 265

一、Zabbix API简介

API(Application Programming Interface,应用程序编程接口)是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力,而又无需访问源码,或理解内部工作机制的细节 Zabbix API开始扮演着越来越重要的角色,尤其是在集成第三方软件和自动化日常任务时。很难想象管理数千台服务器而没有自动化是多么的困难。Zabbix API为批量操作、第三方软件集成以及其他作用提供可编程接口。Zabbix API是在1.8版本中开始引进并且已经被广泛应用。所有的Zabbix移动客户端都是基于API,甚至原生的WEB前端部分也是建立在它之上。Zabbix API 中间件使得架构更加模块化也避免直接对数据库进行操作。它允许你通过JSON RPC协议来创建、更新和获取Zabbix对象并且做任何你喜欢的操作【当然前提是你拥有认证账户】。

Zabbix API提供两项主要功能: 远程管理Zabbix配置 远程检索配置和历史数据

使用JSON API 采用JSON-RPC实现。这意味着调用任何函数,都需要发送POST请求,输入输出数据都是以JSON格式。大致工作流如下: 准备JSON对象,它描述了你想要做什么(创建主机,获取图像,更新监控项等)。 采用POST方法向http://example.com/zabbix/api_jsonrpc.php发送此JSON对象. http://example.com/zabbix/是Zabbix前端地址。api_jsonrpc.php是调用API的PHP脚本。可在安装可视化前端的目录下找到。 获取JSON格式响应。 注:请求除了必须是POST方法之外,HTTP Header Content-Type必须为【application/jsonrequest,application/json-rpc,application/json】其中之一。 可以采用脚本或者任何"手动"支持JSON RPC的工具来使用API。而首先需要了解的就是如何验证和如何使用验证ID来获取想要的信息。后面的演示会以Python脚本和基于Curl的例子来呈现API的基本使用。

基本请求格式 Zabbix API 简化的JSON请求如下:

{ "jsonrpc": "2.0", "method": "method.name", "params": { "param_1_name": "param_1_value", "param_2_name": "param_2_value" }, "id": 1, "auth": "159121b60d19a9b4b55d49e30cf12b81", }

下面一行一行来看: “jsonrpc”: “2.0”-这是标准的JSON RPC参数以标示协议版本。所有的请求都会保持不变。 “method”: “method.name”-这个参数定义了真实执行的操作。例如:host.create、item.update等等 “params”-这里通过传递JSON对象来作为特定方法的参数。如果你希望创建监控项,"name"和"key_“参数是需要的,每个方法需要的参数在Zabbix API文档中都有描述。 “id”: 1-这个字段用于绑定JSON请求和响应。响应会跟请求有相同的"id”。在一次性发送多个请求时很有用,这些也不需要唯一或者连续 “auth”: “159121b60d19a9b4b55d49e30cf12b81”-这是一个认证令牌【authentication token】用以鉴别用户、访问API。这也是使用API进行相关操作的前提-获取认证ID。

二、基本操作

环境介绍: zabbix server:192.168.120.128 调用api地址:http://192.168.120.128/api_jsonrpc.php

1、user.login方法获取token 使用curl命令模拟登录获取到一个token 参数说明: 在这里插入图片描述

curl -s -X POST -H 'Content-Type:application/json' -d ' { "jsonrpc": "2.0", "method": "user.login", "params": { "user": "Admin", "password": "123456" }, "id": 1, "auth": null }' http://192.168.120.128/api_jsonrpc.php

在这里插入图片描述 这里获取到的token值为8d540d8514f784d02572ad98118ca7f5 或者执行以下shell脚本获取token

vim zabbix-get-token.sh #!/bin/bash admin=Admin #zabbix用户 pass=123456 #密码 ZBX='192.168.120.128' #zabbix-server的地址 curl -s -X POST -H 'Content-Type:application/json' -d' { "jsonrpc": "2.0", "method": "user.login", "params": { "user": "'$admin'", "password": "'$pass'" }, "id": 1 "auth": null }' http://$ZBX/api_jsonrpc.php|grep -Po 'result[" :]+\K[^"]+'

2、hostgroup.get方法获取所有主机组ID 参数说明: 在这里插入图片描述

curl -i -X POST -H 'Content-Type:application/json' -d '{"jsonrpc": "2.0","method":"hostgroup.get","params":{"output":["groupid","name"]},"auth":"37d34c356bbd648b358954d2648fae4c","id": 0}' http://192.168.120.128/api_jsonrpc.php

在这里插入图片描述

3、host.get方法获取单个主机组下所有的主机ID 参数说明: 在这里插入图片描述

curl -i -X POST -H'Content-Type: application/json' -d '{"jsonrpc":"2.0","method":"host.get","params":{"output":["hostid","name"],"groupids":"7"},"auth":"37d34c356bbd648b358954d2648fae4c","id": 0}' http://192.168.120.128/api_jsonrpc.php

在这里插入图片描述 在这里插入图片描述

4、itemsid.get方法获取单个主机下所有的监控项ID 参数说明: 在这里插入图片描述

curl -i -X POST -H 'Content-Type:application/json' -d '{"jsonrpc":"2.0","method":"item.get","params":{"output":"itemids","hostids":"10309"},"auth":"37d34c356bbd648b358954d2648fae4c","id": 0}' http://192.168.120.128/api_jsonrpc.php

在这里插入图片描述

5、history.get方法获取单个监控项的历史数据 参数说明: 在这里插入图片描述

curl -i -X POST -H 'Content-Type:application/json' -d '{"jsonrpc":"2.0","method":"history.get","params":{"history":0,"itemids":"29163","output":"extend","limit":10},"auth":"37d34c356bbd648b358954d2648fae4c","id": 0}' http://192.168.120.128/api_jsonrpc.php

在这里插入图片描述

6、get方法的通用参数 在这里插入图片描述

7、创建主机

curl -s -X POST -H "Content-Type: application/json" -d ' { "jsonrpc": "2.0", "method": "host.create", #指定方法创建主机 "params": { "host": "1.1.1.1", #主机ip "interfaces": [ { "type": 1, #接口类型1代表agent接口 "main": 1, "useip": 1, #1表示使用ip "ip": "1.1.1.1", #ip地址 "dns": "", "port": "10050" #端口 } ], "groups": [ { "groupid": "2" #组id } ], "templates": [ { "templateid": "10265" #模板id } ] }, "auth": "37d34c356bbd648b358954d2648fae4c", "id": 1 }' http://192.168.120.128/api_jsonrpc.php

在这里插入图片描述 在这里插入图片描述 执行上述命令即可在命令行添加一台监控主机,可以进一步编写shell脚本批量创建主机

# vim hostadd.sh #/bin/bash for n in `seq -f 10.0.0.%0g 60 100` do curl -s -X POST -H "Content-Type: application/json" -d ' { "jsonrpc": "2.0", "method": "host.create", "params": { "host": "'$n'", "interfaces": [ { "type": 1, "main": 1, "useip": 1, "ip": "'$n'", "dns": "", "port": "10050" } ], "groups": [ { "groupid": "9" } ], "templates": [ { "templateid": "10001" } ] }, "auth": "37d34c356bbd648b358954d2648fae4c", "id": 1 }' http://192.168.120.128/api_jsonrpc.php done

8、删除主机

curl -s -X POST -H "Content-Type: application/json" -d ' { "jsonrpc": "2.0", "method": "host.delete", "params": [ "10319" #主机id ], "auth": "37d34c356bbd648b358954d2648fae4c", "id": 1 }' http://192.168.120.128/api_jsonrpc.php

已删除上面创建的主机 在这里插入图片描述 执行上述命令即可在命令行删除一台监控主机,可以进一步编写shell脚本批量删除上面创建的主机

vim hostdel.sh #/bin/bash curl -s -X POST -H "Content-Type: application/json" -d ' { "jsonrpc": "2.0", "method": "host.get", #利用host.get方法得到主机id "params": { "output": "hostid", "selectGroups": "groupid" }, "auth": "37d34c356bbd648b358954d2648fae4c", "id": 1 }' http://192.168.120.128/api_jsonrpc.php >/tmp/a.txt for n in `seq 2 43` do hostid=`cat /tmp/a.txt|jq '.result['$n'].hostid'|sed 's#"##g'` #过滤出上面批量添加的主机id curl -s -X POST -H "Content-Type: application/json" -d ' { "jsonrpc": "2.0", "method": "host.delete", #利用host.delete方法批量删除主机 "params": [ "'$hostid'" ], "auth": "37d34c356bbd648b358954d2648fae4c", "id": 1 }' http://192.168.120.128/api_jsonrpc.php done

9、创建一个用户

curl -s -X POST -H 'Content-Type:application/json' -d ' { "jsonrpc": "2.0" "method": "user.create", #利用user.create方法创建用户 "params": { "alias": "test", #用户名 "passwd": "123456", #密码 "usrgrps": [ { "usrgrpid": "7" #用户所属组id } ] }, "auth": "37d34c356bbd648b358954d2648fae4c", "id": 1 }' http://192.168.120.128/api_jsonrpc.php

10、删除一个用户

curl -s -X POST -H 'Content-Type:application/json' -d ' { "jsonrpc": "2.0", "method": "user.delete", #利用user.delete方法删除用户 "params": [ "3" #用户id ], "auth": "37d34c356bbd648b358954d2648fae4c", "id": 1 }' http://192.168.120.128/api_jsonrpc.php


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3